home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / GXMessages.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  6KB  |  226 lines

  1. /*
  2.      File:        GXMessages.h
  3.  
  4.      Contains:    This file contains all of the public data structures,
  5.  
  6.      Version:    Technology:    Quickdraw GX 1.1
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __GXMESSAGES__
  19. #define __GXMESSAGES__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24. #ifndef __MIXEDMODE__
  25. #include <MixedMode.h>
  26. #endif
  27. #ifndef __TYPES__
  28. #include <Types.h>
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT_SUPPORTED
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_ALIGN_SUPPORTED
  40. #pragma options align=mac68k
  41. #endif
  42.  
  43. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  44. #if defined(__MWERKS__) && GENERATING68K
  45.     #pragma push
  46.     #pragma pointers_in_D0
  47. #endif
  48.  
  49. /*
  50.  
  51.     >>>>>> CONSTANTS <<<<<<
  52.  
  53. */
  54. /* Message Manager Trap */
  55.  
  56. enum {
  57.     messageManagerTrap            = 0xABFB
  58. };
  59.  
  60. /* Message Manager Gestalt Selector */
  61.  
  62. enum {
  63.     gestaltMessageMgrVersion    = 'mess'
  64. };
  65.  
  66. /* Message Manager Error Result Codes */
  67.  
  68. enum {
  69.     messageStopLoopingErr        = -5775,
  70.     cantDeleteRunningHandlerErr    = -5776,
  71.     noMessageTableErr            = -5777,
  72.     dupSignatureErr                = -5778,
  73.     messageNotReceivedErr        = -5799
  74. };
  75.  
  76. /*
  77.     DATA TYPES
  78. */
  79. typedef OSErr (*MessageHandlerOverrideProcPtr)(long arg1, long arg2, long arg3, long arg4, long arg5, long arg6);
  80.  
  81. #if GENERATINGCFM
  82. typedef UniversalProcPtr MessageHandlerOverrideUPP;
  83. #else
  84. typedef MessageHandlerOverrideProcPtr MessageHandlerOverrideUPP;
  85. #endif
  86.  
  87. enum {
  88.     uppMessageHandlerOverrideProcInfo = kCStackBased
  89.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  90.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  91.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  92.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  93.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  94.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long)))
  95.          | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(long)))
  96. };
  97.  
  98. #if GENERATINGCFM
  99. #define NewMessageHandlerOverrideProc(userRoutine)        \
  100.         (MessageHandlerOverrideUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMessageHandlerOverrideProcInfo, GetCurrentArchitecture())
  101. #else
  102. #define NewMessageHandlerOverrideProc(userRoutine)        \
  103.         ((MessageHandlerOverrideUPP) (userRoutine))
  104. #endif
  105.  
  106. #if GENERATINGCFM
  107. #define CallMessageHandlerOverrideProc(userRoutine, arg1, arg2, arg3, arg4, arg5, arg6)        \
  108.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMessageHandlerOverrideProcInfo, (arg1), (arg2), (arg3), (arg4), (arg5), (arg6))
  109. #else
  110. #define CallMessageHandlerOverrideProc(userRoutine, arg1, arg2, arg3, arg4, arg5, arg6)        \
  111.         (*(userRoutine))((arg1), (arg2), (arg3), (arg4), (arg5), (arg6))
  112. #endif
  113. typedef void (*MessageGlobalsInitProcPtr)(void *messageGlobals);
  114.  
  115. #if GENERATINGCFM
  116. typedef UniversalProcPtr MessageGlobalsInitUPP;
  117. #else
  118. typedef MessageGlobalsInitProcPtr MessageGlobalsInitUPP;
  119. #endif
  120.  
  121. enum {
  122.     uppMessageGlobalsInitProcInfo = kCStackBased
  123.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(void *)))
  124. };
  125.  
  126. #if GENERATINGCFM
  127. #define NewMessageGlobalsInitProc(userRoutine)        \
  128.         (MessageGlobalsInitUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMessageGlobalsInitProcInfo, GetCurrentArchitecture())
  129. #else
  130. #define NewMessageGlobalsInitProc(userRoutine)        \
  131.         ((MessageGlobalsInitUPP) (userRoutine))
  132. #endif
  133.  
  134. #if GENERATINGCFM
  135. #define CallMessageGlobalsInitProc(userRoutine, messageGlobals)        \
  136.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMessageGlobalsInitProcInfo, (messageGlobals))
  137. #else
  138. #define CallMessageGlobalsInitProc(userRoutine, messageGlobals)        \
  139.         (*(userRoutine))((messageGlobals))
  140. #endif
  141. #if OLDROUTINENAMES
  142. typedef MessageHandlerOverrideProcPtr MessageHandlerOverrideProc;
  143. typedef MessageGlobalsInitProcPtr MessageGlobalsInitProc;
  144. #endif
  145. typedef struct OpaqueMessageHandler* MessageHandler;
  146. typedef struct OpaqueMessageObject* MessageObject;
  147. /*
  148.  
  149.     PUBLIC INTERFACES
  150.  
  151.     Message Handler API Routines
  152. */
  153. extern long CountMessageHandlerInstances(void )
  154.  TWOWORDINLINE(0x7028, 0xABFB);
  155.  
  156. extern void *GetMessageHandlerClassContext(void )
  157.  TWOWORDINLINE(0x7029, 0xABFB);
  158.  
  159. extern void *SetMessageHandlerClassContext(void *anyValue)
  160.  TWOWORDINLINE(0x702A, 0xABFB);
  161.  
  162. extern void *GetMessageHandlerInstanceContext(void )
  163.  TWOWORDINLINE(0x702B, 0xABFB);
  164.  
  165. extern void *SetMessageHandlerInstanceContext(void *anyValue)
  166.  TWOWORDINLINE(0x702C, 0xABFB);
  167.  
  168. extern OSErr NewMessageGlobals(long messageGlobalsSize, MessageGlobalsInitUPP initProc)
  169.  TWOWORDINLINE(0x702D, 0xABFB);
  170.  
  171. extern void DisposeMessageGlobals(void )
  172.  TWOWORDINLINE(0x702E, 0xABFB);
  173.  
  174. /*
  175.     Message Sending API Routines
  176. */
  177. #ifndef BUILDING_GXMESSAGES
  178. extern OSErr SendObjectMessage(MessageObject msgObject, long messageSelector, ...)
  179.  FIVEWORDINLINE(0x205F, 0x221F, 0x702F, 0xABFB, 0x518F);
  180.  
  181. extern OSErr SendObjectMessageTo(MessageObject msgObject, long messageSelector, MessageHandler msgHandler, ...)
  182.  SEVENWORDINLINE(0x205F, 0x221F, 0x241F, 0x7030, 0xABFB, 0x9EFC, 0x000C);
  183.  
  184. extern OSErr SendObjectMessageFor(MessageObject msgObject, long messageSelector, MessageHandler msgHandler, ...)
  185.  SEVENWORDINLINE(0x205F, 0x221F, 0x241F, 0x7037, 0xABFB, 0x9EFC, 0x000C);
  186.  
  187. extern OSErr StartObjectMessageAt(MessageObject msgObject, long messageSelector, MessageHandler msgHandler, ...)
  188.  SEVENWORDINLINE(0x205F, 0x221F, 0x241F, 0x7031, 0xABFB, 0x9EFC, 0x000C);
  189.  
  190. extern OSErr SendMessage(long messageSelector, ...)
  191.  FOURWORDINLINE(0x221F, 0x7032, 0xABFB, 0x598F);
  192.  
  193. extern OSErr SendMessageTo(long messageSelector, MessageHandler msgHandler, ...)
  194.  FIVEWORDINLINE(0x221F, 0x241F, 0x7033, 0xABFB, 0x518F);
  195.  
  196. extern OSErr StartMessageAt(long messageSelector, MessageHandler msgHandler, ...)
  197.  FIVEWORDINLINE(0x221F, 0x241F, 0x7034, 0xABFB, 0x518F);
  198.  
  199. extern OSErr ForwardMessage(long messageSelector, ...)
  200.  FOURWORDINLINE(0x221F, 0x7035, 0xABFB, 0x598F);
  201.  
  202. extern OSErr ForwardThisMessage(void *parameter1, ...)
  203.  TWOWORDINLINE(0x7036, 0xABFB);
  204.  
  205. #endif    /* BUILDING_GXMESSAGES */
  206.  
  207. #if defined(__MWERKS__) && GENERATING68K
  208.     #pragma pop
  209. #endif
  210. #endif
  211.  
  212. #if PRAGMA_ALIGN_SUPPORTED
  213. #pragma options align=reset
  214. #endif
  215.  
  216. #if PRAGMA_IMPORT_SUPPORTED
  217. #pragma import off
  218. #endif
  219.  
  220. #ifdef __cplusplus
  221. }
  222. #endif
  223.  
  224. #endif /* __GXMESSAGES__ */
  225.  
  226.